home *** CD-ROM | disk | FTP | other *** search
/ MIDICraft's MIDINET CD-ROM / MIDICraft's MIDINET CD-ROM.iso / DOSUTILS / MIDIDRUM.DOC < prev    next >
Text File  |  1997-03-04  |  7KB  |  180 lines

  1.         ******************************
  2.             MIDIDRUM v1.5
  3.     
  4.          split drum instruments of midi binaries 
  5.               by Guenter Nagler 
  6.                 1995 
  7.           (gnagler@ihm.tu-graz.ac.at)
  8.         ******************************
  9.  
  10. [0] FEATURES
  11.     + reads a binary midi file of format 0 or 1 
  12.     + writes a binary midi file of format 1
  13.     + scans midi for drum instruments that are used
  14.     + copies tracks that are not drums 
  15.     + generate a track for each used drum instrument
  16.     + copy drum notes and assigns controls that were used in original 
  17.       drum tracks.
  18.     + split tracks that play more than one program into tracks that play
  19.       only one program per channel per track (option -program)
  20.     + split optionally drum tracks or program tracks (use options)
  21.  
  22. [1] BACKGROUND
  23. A cakewalk expert posted a cakewalk macro program (.CAL) in 
  24. newsgroup alt.binaries.sounds.midi . I found that the idea of this program 
  25. very good to learn new drum patterns. It is difficult to get an overview
  26. about a drum pattern when all drum instruments are mixed. It is also difficult
  27. to recognize which drum notes play which instruments.
  28. I am not a cakewalk user so I was not able to use the program, so I decided
  29. to program an own program that splits the drums.
  30.  
  31. [2] FILES DESCRIPTION
  32.  
  33. MIDIDRUM.EXE.........converter program
  34. MIDIDRUM.DOC.........this file, showing usage of MIDIDRUM.EXE
  35. MIDIIO.HPP...........header file for a c++ midi parser
  36. MIDIIO.CPP...........source code for a c++ midi parser
  37. MIDIDRUM.CPP.........c++ source code for midi to text
  38. MIDIDRUM.MAK.........make file for project 
  39. MIDIDRUM.CFG.........compiler options for make
  40. MIDIDRUM.PRJ.........compiler project for borland c++ compilers
  41. only MIDIDRUM.EXE is required to run program
  42.  
  43. [3] COPYRIGHT
  44.  
  45. MIDIDRUM (c) 1995 was created by Guenter Nagler.
  46.  
  47. MIDIDRUM is free and may be used as you wish with this one exception:
  48.  
  49.     You may NOT charge any fee or derive any profit for distribution
  50.     of MIDIDRUM.  Thus, you may NOT sell or bundle MIDIDRUM with any 
  51.     product in a retail environment (shareware disk distribution, CD-ROM,
  52.     etc.) without permission of the author.
  53.  
  54. You may give MIDIDRUM to your friends, upload it to a BBS, or ftp it to
  55. another internet site, as long as you don't charge anything for it.
  56.  
  57. [4] DISCLAIMER
  58.  
  59. MIDIDRUM was designed to handle 100% compatible general midi files.
  60. The midi parser was tested with 1000 different midi files but 
  61. I can not say if each 100% midi compatible midi file can be correctly 
  62. converted. So I give no guarantees of the results, especially with non 100% 
  63. compatible midi files.
  64. If you find a midi file that you think to be 100% compatible midi
  65. that is not correctly converted, please send a sample file to 
  66. gnagler@ihm.tu-graz.ac.at . 
  67.  
  68. Use MIDIDRUM at your own risk.  Anything you do with MIDIDRUM is your
  69. responsibility, and not the author's.  Any damage caused to any person,
  70. computer, software, hardware, company, or business by running MIDIDRUM 
  71. is your responsibility, and the author will not be liable.
  72.  
  73. If you don't understand these terms, or are not sure of something, or
  74. are afraid something bad might come of using MIDIDRUM, don't  use  it!
  75. You are here forewarned.
  76.  
  77. [5] INSTALLATION
  78.  
  79. [MSDOS]
  80. Simply copy MIDIDRUM.EXE in a directory that is in your path.
  81. When you start the program without arguments
  82.  
  83. [UNIX]
  84. compile sources with your C++ compiler (e.g. GNU Compiler g++):
  85.  
  86. g++ -o mididrum mididrum.cpp midiio.cpp
  87.  
  88. and run program
  89.  
  90. $ mididrum
  91.  
  92. C:\> MIDIDRUM
  93.  
  94. you should get the usage text (see next section)
  95.  
  96. [6] USAGE
  97.  
  98. usage: mididrum [-drum][-program][-both] srcfile.mid dstfile.mid
  99. splits drum instruments into separate tracks
  100. This program only accepts format 0 and 1 midi files.
  101. -version    get program version
  102. -drum        split drum tracks by drum instruments
  103. -program    split non-drum tracks by programs
  104. -both        split drums and programs
  105. Format 0 midi files (1 track) can only be splitted with option -both
  106.  
  107. MIDIDRUM assumes that only channel 10 tracks contain drums (General Midi).
  108. The resulting drum tracks are set to channel 10 (GM).
  109.  
  110. Warning: 
  111.   If splitting a midi file format 0 file then option -both is automatically
  112.   activated!
  113.  
  114. Warning:
  115.   MIDIDRUM could split a midi file into many tracks, but some weak midi 
  116.   players ignore last tracks if exceeding a certain limit (e.g. 16 tracks).
  117.  
  118. [8] SUGGESTIONS / COMMENTS / BUG REPORTS / QUESTIONS
  119.  
  120.          WWW:    http://hgiicm.tu-graz.ac.at/Cpub
  121.           contains all my dos/unix midi programs
  122.          EMAIL:  gnagler@ihm.tu-graz.ac.at
  123.  
  124. [9] SAMPLES
  125.  
  126. MIDIDRUM accepts only format 0 or 1 midi files. 
  127. When trying to split any other format it says:
  128.  
  129. command> mididrum sample2.mid splitdrm.mid
  130. sample2.mid is format 2. This program only accepts format 0 or 1.
  131.  
  132. MIDIDRUM does not convert a midi file to the same filename:
  133. command> mididrum sample1.mid sample1.mid
  134. cannot convert midi to same file
  135.  
  136. Warning: Be sure to use a new output filename. MIDIDRUM will overwrite 
  137.   existing files!
  138.  
  139. When the midi file is valid and it is of format 0 or 1 it converts the file:
  140. command> mididrum sample1.mid splitdrm.mid
  141. 10%    (counts from 0% to 100%)
  142. output written to splitdrm.mid
  143.  
  144. Splitting only programs of a format 1 midi file:  
  145. command> mididrum -program sample1 splitprg.mid
  146. output written to splitprg.mid
  147.  
  148. The programs are separated in own tracks, the drums remain in tracks 
  149. as used in original file.
  150.  
  151. Hint: use midifmt or mididir to get information about midi format
  152.  
  153. [10] CHANGES
  154. v1.0 to v1.1:
  155. * fixed bug that caused segmentation fault/stack overflow
  156. * prevents from writing multiple end of track commands
  157.  
  158. v1.1 to v1.2:
  159. * added option -program to split tracks that change programs during playing
  160.   into multiple tracks playing only one program
  161. * added option -version
  162. * allow splitting midi format 0 track (automatically sets option -program)
  163.   the result is a midi file format 1 containing many tracks 
  164.   (one per program/channel and one per drum instrument)
  165.  
  166. v1.2 to v1.3:
  167. * used updated midiio 
  168. * convertion of files with many tracks (e.g. 130) caused assert fail message
  169.   due to not enough memory.
  170.   Changed assert into error message "out of memory" and compiled in large
  171.   memory model to access more memory.
  172.   
  173. v1.3 to v1.4:
  174. * bug fixed splitting midi format 0 did not write drum notes
  175. * new midiio generated divide error (because mididrum does not read
  176.   sequential, which skips reading tempo track)
  177.  
  178. v1.4 to v1.5:
  179. * added options -program, -drum, -both for better choice.
  180.